home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / doom / quake.zip / KASCAM17.ZIP / SOURCE / TARBABY.QC < prev    next >
Text File  |  1997-02-19  |  8KB  |  223 lines

  1. /*
  2. ==============================================================================
  3.  
  4. BLOB
  5.  
  6. ==============================================================================
  7. */
  8.  
  9. $cd id1/models/tarbaby
  10. $origin 0 0 24
  11. $base base
  12.  
  13. $skin skin
  14.  
  15. $frame walk1 walk2 walk3 walk4  walk5 walk6 walk7 walk8 walk9 walk10
  16. $frame walk11 walk12 walk13 walk14 walk15 walk16 walk17 walk18 walk19
  17. $frame walk20 walk21 walk22 walk23 walk24 walk25
  18.  
  19. $frame run1 run2 run3 run4 run5 run6  run7 run8 run9 run10 run11 run12 run13
  20. $frame run14 run15 run16 run17 run18 run19 run20 run21 run22 run23
  21. $frame run24 run25
  22.  
  23. $frame jump1 jump2 jump3 jump4 jump5 jump6
  24.  
  25. $frame fly1 fly2 fly3 fly4
  26.  
  27. $frame exp
  28.  
  29. void()  tbaby_stand1    =[  $walk1,     tbaby_stand1    ] {ai_stand();};
  30.  
  31. void()  tbaby_hang1     =[  $walk1,     tbaby_hang1 ] {ai_stand();};
  32.  
  33. void()  tbaby_walk1 =[  $walk1,     tbaby_walk2 ] {ai_turn();};
  34. void()  tbaby_walk2 =[  $walk2,     tbaby_walk3 ] {ai_turn();};
  35. void()  tbaby_walk3 =[  $walk3,     tbaby_walk4 ] {ai_turn();};
  36. void()  tbaby_walk4 =[  $walk4,     tbaby_walk5 ] {ai_turn();};
  37. void()  tbaby_walk5 =[  $walk5,     tbaby_walk6 ] {ai_turn();};
  38. void()  tbaby_walk6 =[  $walk6,     tbaby_walk7 ] {ai_turn();};
  39. void()  tbaby_walk7 =[  $walk7,     tbaby_walk8 ] {ai_turn();};
  40. void()  tbaby_walk8 =[  $walk8,     tbaby_walk9 ] {ai_turn();};
  41. void()  tbaby_walk9 =[  $walk9,     tbaby_walk10    ] {ai_turn();};
  42. void()  tbaby_walk10    =[  $walk10,        tbaby_walk11    ] {ai_turn();};
  43. void()  tbaby_walk11    =[  $walk11,        tbaby_walk12    ] {ai_walk(2);};
  44. void()  tbaby_walk12    =[  $walk12,        tbaby_walk13    ] {ai_walk(2);};
  45. void()  tbaby_walk13    =[  $walk13,        tbaby_walk14    ] {ai_walk(2);};
  46. void()  tbaby_walk14    =[  $walk14,        tbaby_walk15    ] {ai_walk(2);};
  47. void()  tbaby_walk15    =[  $walk15,        tbaby_walk16    ] {ai_walk(2);};
  48. void()  tbaby_walk16    =[  $walk16,        tbaby_walk17    ] {ai_walk(2);};
  49. void()  tbaby_walk17    =[  $walk17,        tbaby_walk18    ] {ai_walk(2);};
  50. void()  tbaby_walk18    =[  $walk18,        tbaby_walk19    ] {ai_walk(2);};
  51. void()  tbaby_walk19    =[  $walk19,        tbaby_walk20    ] {ai_walk(2);};
  52. void()  tbaby_walk20    =[  $walk20,        tbaby_walk21    ] {ai_walk(2);};
  53. void()  tbaby_walk21    =[  $walk21,        tbaby_walk22    ] {ai_walk(2);};
  54. void()  tbaby_walk22    =[  $walk22,        tbaby_walk23    ] {ai_walk(2);};
  55. void()  tbaby_walk23    =[  $walk23,        tbaby_walk24    ] {ai_walk(2);};
  56. void()  tbaby_walk24    =[  $walk24,        tbaby_walk25    ] {ai_walk(2);};
  57. void()  tbaby_walk25    =[  $walk25,        tbaby_walk1 ] {ai_walk(2);};
  58.  
  59. void()  tbaby_run1  =[  $run1,      tbaby_run2  ] {ai_face();};
  60. void()  tbaby_run2  =[  $run2,      tbaby_run3  ] {ai_face();};
  61. void()  tbaby_run3  =[  $run3,      tbaby_run4  ] {ai_face();};
  62. void()  tbaby_run4  =[  $run4,      tbaby_run5  ] {ai_face();};
  63. void()  tbaby_run5  =[  $run5,      tbaby_run6  ] {ai_face();};
  64. void()  tbaby_run6  =[  $run6,      tbaby_run7  ] {ai_face();};
  65. void()  tbaby_run7  =[  $run7,      tbaby_run8  ] {ai_face();};
  66. void()  tbaby_run8  =[  $run8,      tbaby_run9  ] {ai_face();};
  67. void()  tbaby_run9  =[  $run9,      tbaby_run10 ] {ai_face();};
  68. void()  tbaby_run10 =[  $run10,     tbaby_run11 ] {ai_face();};
  69. void()  tbaby_run11 =[  $run11,     tbaby_run12 ] {ai_run(2);};
  70. void()  tbaby_run12 =[  $run12,     tbaby_run13 ] {ai_run(2);};
  71. void()  tbaby_run13 =[  $run13,     tbaby_run14 ] {ai_run(2);};
  72. void()  tbaby_run14 =[  $run14,     tbaby_run15 ] {ai_run(2);};
  73. void()  tbaby_run15 =[  $run15,     tbaby_run16 ] {ai_run(2);};
  74. void()  tbaby_run16 =[  $run16,     tbaby_run17 ] {ai_run(2);};
  75. void()  tbaby_run17 =[  $run17,     tbaby_run18 ] {ai_run(2);};
  76. void()  tbaby_run18 =[  $run18,     tbaby_run19 ] {ai_run(2);};
  77. void()  tbaby_run19 =[  $run19,     tbaby_run20 ] {ai_run(2);};
  78. void()  tbaby_run20 =[  $run20,     tbaby_run21 ] {ai_run(2);};
  79. void()  tbaby_run21 =[  $run21,     tbaby_run22 ] {ai_run(2);};
  80. void()  tbaby_run22 =[  $run22,     tbaby_run23 ] {ai_run(2);};
  81. void()  tbaby_run23 =[  $run23,     tbaby_run24 ] {ai_run(2);};
  82. void()  tbaby_run24 =[  $run24,     tbaby_run25 ] {ai_run(2);};
  83. void()  tbaby_run25 =[  $run25,     tbaby_run1  ] {ai_run(2);};
  84.  
  85.  
  86. //============================================================================
  87.  
  88.  
  89. void()  tbaby_jump1;
  90.  
  91. void()  Tar_JumpTouch =
  92. {
  93.     local   float   ldmg;
  94.  
  95.     if (other.takedamage && other.classname != self.classname)
  96.     {
  97.         if ( vlen(self.velocity) > 400 )
  98.         {
  99.             ldmg = 10 + 10*random();
  100.             T_Damage (other, self, self, ldmg);
  101.             sound (self, CHAN_WEAPON, "blob/hit1.wav", 1, ATTN_NORM);
  102.         }
  103.     }
  104.     else
  105.         sound (self, CHAN_WEAPON, "blob/land1.wav", 1, ATTN_NORM);
  106.  
  107.  
  108.     if (!checkbottom(self))
  109.     {
  110.         if (self.flags & FL_ONGROUND)
  111.         {   // jump randomly to not get hung up
  112. //dprint ("popjump\n");
  113.     self.touch = SUB_Null;
  114.     self.think = tbaby_run1;
  115.     self.movetype = MOVETYPE_STEP;
  116.     self.nextthink = time + 0.1;
  117.  
  118. //          self.velocity_x = (random() - 0.5) * 600;
  119. //          self.velocity_y = (random() - 0.5) * 600;
  120. //          self.velocity_z = 200;
  121. //          self.flags = self.flags - FL_ONGROUND;
  122.         }
  123.         return; // not on ground yet
  124.     }
  125.  
  126.     self.touch = SUB_Null;
  127.     self.think = tbaby_jump1;
  128.     self.nextthink = time + 0.1;
  129. };
  130.  
  131. void()  tbaby_jump5;
  132.  
  133. void()  tbaby_fly1      =[  $fly1,  tbaby_fly2  ] {};
  134. void()  tbaby_fly2      =[  $fly2,  tbaby_fly3  ] {};
  135. void()  tbaby_fly3      =[  $fly3,  tbaby_fly4  ] {};
  136. void()  tbaby_fly4      =[  $fly4,  tbaby_fly1  ] {
  137. self.cnt = self.cnt + 1;
  138. if (self.cnt == 4)
  139. {
  140. //dprint ("spawn hop\n");
  141. tbaby_jump5 ();
  142. }
  143. };
  144.  
  145. void()  tbaby_jump1     =[  $jump1, tbaby_jump2     ] {ai_face();};
  146. void()  tbaby_jump2     =[  $jump2, tbaby_jump3     ] {ai_face();};
  147. void()  tbaby_jump3     =[  $jump3, tbaby_jump4     ] {ai_face();};
  148. void()  tbaby_jump4     =[  $jump4, tbaby_jump5     ] {ai_face();};
  149. void()  tbaby_jump5     =[  $jump5, tbaby_jump6     ]
  150. {
  151.     self.movetype = MOVETYPE_BOUNCE;
  152.     self.touch = Tar_JumpTouch;
  153.     makevectors (self.angles);
  154.     self.origin_z = self.origin_z + 1;
  155.     self.velocity = v_forward * 600 + '0 0 200';
  156.     self.velocity_z = self.velocity_z + random()*150;
  157.     if (self.flags & FL_ONGROUND)
  158.         self.flags = self.flags - FL_ONGROUND;
  159.     self.cnt = 0;
  160. };
  161. void()  tbaby_jump6 =[  $jump6,tbaby_fly1   ] {};
  162.  
  163.  
  164.  
  165. //=============================================================================
  166.  
  167. void()  tbaby_die1  =[  $exp,       tbaby_die2  ] {
  168. self.takedamage = DAMAGE_NO;
  169. };
  170. void()  tbaby_die2  =[  $exp,       tbaby_run1  ]
  171. {
  172.     T_RadiusDamage (self, self, 120, world);
  173.  
  174.     sound (self, CHAN_VOICE, "blob/death1.wav", 1, ATTN_NORM);
  175.     self.origin = self.origin - 8*normalize(self.velocity);
  176.  
  177.     WriteByte (MSG_BROADCAST, SVC_TEMPENTITY);
  178.     WriteByte (MSG_BROADCAST, TE_TAREXPLOSION);
  179.     WriteCoord (MSG_BROADCAST, self.origin_x);
  180.     WriteCoord (MSG_BROADCAST, self.origin_y);
  181.     WriteCoord (MSG_BROADCAST, self.origin_z);
  182.  
  183.     BecomeExplosion ();
  184. };
  185.  
  186. //=============================================================================
  187.  
  188.  
  189. /*QUAKED monster_tarbaby (1 0 0) (-16 -16 -24) (16 16 24) Ambush
  190. */
  191. void() monster_tarbaby =
  192. {
  193.     if (deathmatch)
  194.     {
  195.         remove(self);
  196.         return;
  197.     }
  198.     precache_model2 ("progs/tarbaby.mdl");
  199.  
  200.     precache_sound2 ("blob/death1.wav");
  201.     precache_sound2 ("blob/hit1.wav");
  202.     precache_sound2 ("blob/land1.wav");
  203.     precache_sound2 ("blob/sight1.wav");
  204.  
  205.     self.solid = SOLID_SLIDEBOX;
  206.     self.movetype = MOVETYPE_STEP;
  207.  
  208.     setmodel (self, "progs/tarbaby.mdl");
  209.  
  210.     setsize (self, '-16 -16 -24', '16 16 40');
  211.     self.health = 80;
  212.  
  213.     self.th_stand = tbaby_stand1;
  214.     self.th_walk = tbaby_walk1;
  215.     self.th_run = tbaby_run1;
  216.     self.th_missile = tbaby_jump1;
  217.     self.th_melee = tbaby_jump1;
  218.     self.th_die = tbaby_die1;
  219.  
  220.     walkmonster_start ();
  221. };
  222.  
  223.